package gretha.panels;

import gretha.donnees.Cohorte;
import gretha.donnees.CohorteDuMassif;
import gretha.donnees.Massif;
import gretha.donnees.Modification;
import gretha.donnees.Prelevement;
import gretha.donnees.ResultatAnnuel;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

public class PanelListeActions extends JPanel {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private JButton modifier;

	private CreationScenario parent;
		
	private JLabel titre;
	
	private JTextField jTextAnneDepart;
	
	private JTextField jTextAnneFin;
	
	private JButton boutonLancerLaSimulation;
	
	private JPanel hautDePanel;
	
	private JPanel corps;

	public PanelListeActions(CreationScenario panel) {
		parent = panel;
		
		setBorder(new EmptyBorder(10, 10, 10, 10));
		
		GridBagLayout gbl = new GridBagLayout();
	    this.setLayout(gbl);
	    
	    // Add the display to the top four cells
	    GridBagConstraints contraintesHautDePanel = new GridBagConstraints();
	    contraintesHautDePanel.gridx = 0;
	    contraintesHautDePanel.gridy = 0;
	    contraintesHautDePanel.gridwidth = 11;
	    contraintesHautDePanel.gridheight = 1;
	    contraintesHautDePanel.fill = GridBagConstraints.BOTH;
	    
	    // Add the display to the top four cells
	    GridBagConstraints contraintesCorps = new GridBagConstraints();
	    contraintesCorps.gridx = 6;
	    contraintesCorps.gridy = 1;
	    contraintesCorps.gridwidth = 1;
	    contraintesCorps.gridheight = 1;
	    contraintesCorps.fill = GridBagConstraints.BOTH;

	    corps = new JPanel();
		hautDePanel = new JPanel();
	    
		// Le titre
		titre = new JLabel("Massifs : ");
		hautDePanel.add(titre);
		
		
		modifier = new JButton("modifier");
		ActionListener modification = new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
			new DialogFutur();
			}
		};
		modifier.addActionListener(modification);

		hautDePanel.add(modifier);
		
		
		
		// Ajout de l'année de départ
		hautDePanel.add(new JLabel("Année de départ : "));
		jTextAnneDepart = new JTextField(5);
		hautDePanel.add(jTextAnneDepart);

		// Ajout de l'année de fin
		hautDePanel.add(new JLabel("Année de fin : "));
		jTextAnneFin = new JTextField(5);
		hautDePanel.add(jTextAnneFin);

		// Ajout du bouton de lancement de la simulation
		boutonLancerLaSimulation = new JButton("Lancer la simulation");

		java.awt.event.ActionListener simuler = new java.awt.event.ActionListener() {
			ArrayList<ResultatAnnuel> resultatsAnnuel = new ArrayList<ResultatAnnuel>();
			public void actionPerformed(java.awt.event.ActionEvent e) {
			
				
				for (Massif m : parent.getListeDesMassifsDuScenario()) {

					m.recupererDonnees(m.getId());

					int anneeDepart = Integer.parseInt(jTextAnneDepart
							.getText());
					int anneeFin = Integer.parseInt(jTextAnneFin.getText());

					if (anneeDepart < anneeFin) {
						for (int i = 0; i < (anneeFin - anneeDepart); i++) {
							for (CohorteDuMassif cm : m.getCohortes()) {
								// On recupere la cohorte Cohorte
								Cohorte tmp = new Cohorte();
								tmp = cm.getCohorte();

								// On calcule l'année actuelle pour la cohorte
								int annee = cm.getAge() + i;

								// On calcule l'annee reelle
								int anneeReele = anneeDepart + i;

								// On recupère l'id de la cohorte
								int idCohorte = tmp.getId();

								// On recupere la modification de cette annee
								// pour la cohorte
								Modification modif = new Modification();
								modif = tmp.modificationEnAnnee(annee, idCohorte);
								if (annee >= cm.getCohorte().anneeDeDebut() || annee <= cm.getCohorte().anneeDeFin()) {
									double volumeUnitaire = modif.getVolumeUnitaire();
									double tauxDeMortalite = modif.getTauxDeMortalite();

								} // On recupere le prelevement s'il y en a un
								Prelevement prelev = new Prelevement();
								prelev = tmp.prelevementEnAnnee(annee, idCohorte);

								if (prelev != null) {
									resultatsAnnuel.add(new ResultatAnnuel(anneeReele,prelev.getVolume()));
								}
							}
						}
						new DialogResultat(resultatsAnnuel);
					}
				}
				
			}
		};

		boutonLancerLaSimulation.addActionListener(simuler);
		corps.add(boutonLancerLaSimulation);
		
		gbl.setConstraints(hautDePanel, contraintesHautDePanel);
		gbl.setConstraints(corps, contraintesCorps);
			
		add(hautDePanel);
		add(corps);
		
	}

	public JButton getModifier() {
		return modifier;
	}

	public void setModifier(JButton modifier) {
		this.modifier = modifier;
	}
	
	

	public JTextField getjTextAnneDepart() {
		return jTextAnneDepart;
	}

	public void setjTextAnneDepart(JTextField jTextAnneDepart) {
		this.jTextAnneDepart = jTextAnneDepart;
	}

	public JTextField getjTextAnneFin() {
		return jTextAnneFin;
	}

	public void setjTextAnneFin(JTextField jTextAnneFin) {
		this.jTextAnneFin = jTextAnneFin;
	}


}
